/**
 * Created with IntelliJ IDEA.
 * Description:递归练习
 * User: 阿宾
 * Date: 2024-05-04
 * Time: 17:36
 */
public class Test03 {
    //按顺序打印一个数字的每一位(例如 1234 打印出 1 2 3 4)
    public static void print(int n){
        if(n > 9){
            print(n / 10);
        }
        System.out.print(n % 10+" ");
    }
    //递归求 1 + 2 + 3 + ... + 10
    public static int fac(int n){
        if(n == 1){
            return 1;
        }else{
            return n+fac(n-1);
        }
    }
    //写一个递归方法，输入一个非负整数，返回组成它的数字之和. 例如，输入 1729, 则应该返回
    //1+7+2+9，它的和是19
    public static int sum(int n){
        while(n > 9){
            return n % 10 + sum(n/10);
        }
        return n % 10;
    }
    //求斐波那契数列的第n项
    public static int fib(int n){
        /*if(n == 1 || n == 2){
            return 1;
        }else{
            return fib(n-1) + fib(n-2);
        }*/
        /*if(n == 1){
            return 0;
        }
        if(n == 2){
            return 1;
        }
        return fib(n-1)+fib(n-2);*/
        if(n == 1){
            return 1;
        }
        if(n == 2){
            return 1;
        }
        int n1 = 1;
        int n2 = 1;
        int n3 = 0;
        while(n > 2){
            n3 = n1 + n2;
            n1 = n2;
            n2 = n3;
            n--;
        }
        return n3;


    }
    //方法2

    public static void main(String[] args) {
//        print(1234);
        /*int ret = fac(10);
        System.out.println(ret);*/
        int ret = fib(41);
        System.out.println(ret);

    }
}
